Members
Overall Objectives
Research Program
Application Domains
New Software and Platforms
New Results
Bilateral Contracts and Grants with Industry
Partnerships and Cooperations
Dissemination
Bibliography
XML PDF e-pub
PDF e-Pub


Section: New Software and Platforms

RanK

Participants : Christophe Alias, Alain Darte, Paul Feautrier, Laure Gonnord [Compsys] .

RanK is a software tool that can prove the termination of a program (in some cases) by computing a ranking function, i.e., a mapping from the operations of the program to a well-founded set that decreases as the computation advances. In case of success, RanK can also provide an upper bound of the worst-case time complexity of the program as a symbolic affine expression involving the input variables of the program (parameters), when it exists. In case of failure, RanK tries to prove the non-termination of the program and then to exhibit a counter-example input. This last feature is of great help for program understanding and debugging. The theory underlying RanK was presented at SAS'10  [15] .

The input of RanK is an integer automaton, computed by C2fsm (see Section  5.11 ), representing the control structure of the program to be analyzed. RanK uses the Aspic tool (see Section  5.10 ), developed by Laure Gonnord during her PhD thesis, to compute automaton invariants. RanK has been used to discover successfully the worst-case time complexity of many benchmarks kernels of the community (see the WTC benchmark suite at http://compsys-tools.ens-lyon.fr/wtc/index.html ). It uses the libraries Piplib (Section  5.2 ) and Polylib.

RanK has been implemented by Christophe Alias, using the compiler infrastructure PoCo (Section  5.6 ). It represents more than 3000 lines of C++. The tool has been presented at the CSTVA'13 workshop  [16] . An online demonstrator is available at http://compsys-tools.ens-lyon.fr/rank .